package array.binarysearch;

/**
 * @ClassName IsPerfectSquare
 * @Description TODO
 * @Author lenovo
 * @Date 2023-02-10 11:30
 * @Version 1.0
 * @Comment Magic. Do not touch.
 * If this comment is removed. the program will blow up
 */
public class IsPerfectSquare {

    /**
     * 367. 有效的完全平方数
     * 给你一个正整数 num 。如果 num 是一个完全平方数，则返回 true ，否则返回 false 。
     * <p>
     * 完全平方数 是一个可以写成某个整数的平方的整数。换句话说，它可以写成某个整数和自身的乘积。
     * <p>
     * 不能使用任何内置的库函数，如  sqrt 。
     * <p>
     * <p>
     * <p>
     * 示例 1：
     * <p>
     * 输入：num = 16
     * 输出：true
     * 解释：返回 true ，因为 4 * 4 = 16 且 4 是一个整数。
     * 示例 2：
     * <p>
     * 输入：num = 14
     * 输出：false
     * 解释：返回 false ，因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。
     */

    public boolean isPerfectSquare(int num) {

        boolean res = false;
        int left = 0;
        int right = num;
        while (left <= right) {
            int mid = (left + right) / 2;
            long mutiply = (long) mid * mid;
            if (mutiply > num) {
                right = mid - 1;
            } else if (mutiply < num) {
                left = mid + 1;
            } else {
                res = true;
                break;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        IsPerfectSquare isPerfectSquare = new IsPerfectSquare();
        System.out.println(isPerfectSquare.isPerfectSquare(100));
    }
}